package com.unitd.modules.sys.entity;

import com.unitd.comm.entity.SysEntity;
import org.hibernate.validator.constraints.Length;

import javax.persistence.Column;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;

/**
 * @desc 用户表
 * @filename SysUser.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0 
 * @date 2017-04-26
 */ 
@Table(name = "sys_user")
public class SysUser extends SysEntity {

	/** 用户编号 */
	@Column(name = "user_code")
	private String userCode;
	/** 核心客户号 */
	@Column(name = "main_corp_no")
	private String mainCorpNo;
	/** 姓名 */
	@Column(name = "user_name")
	private String userName;
	/** 密码 */
	@Column(name = "user_pwd")
	private String userPwd;
	/** 归属部门 */
	@Column(name = "org_no")
	private String orgNo;
	/** 用户级别 */
	private String rank;
	/** 用户状态(0:正常;1:锁定) */
	private String state;
	/** 用户头像 */
	private String photo;
	/** 性别(0:男;1:女) */
	private String sex;
	/** 联系电话 */
	private String phone;
	/** 用户身份证号码 */
	@Column(name = "id_code")
	private String idCode;
	/** 是否可登录(0:是;1:否) */
	@Column(name = "login_flag")
	private String loginFlag;
	/** 最后登陆IP */
	@Column(name = "login_ip")
	private String loginIp;
	/** 最后登陆时间 */
	@Column(name = "login_date")
	private Date loginDate;
	/** 排序 */
	private Long sort;

	/********* 与数据存储无关,但展示或其他关联时需要用的属性 *********/
	/** 所属机构名称 */
	@Transient
	private String orgName;
	@Transient
	private SysOrg sysOrg;

	/**
	 * @desc 构造方法 SysUser
	 */
	public SysUser(String id, String userCode, String mainCorpNo, String userName, String userPwd, String orgNo, String rank, String state, String photo, String sex, String phone, String idCode, String loginIp, Date loginDate, String loginFlag, Long sort, String createBy, Date createDate, String updateBy, Date updateDate, String remarks, String delFlag) {
		this.id = id;
		this.userCode = userCode;
		this.mainCorpNo = mainCorpNo;
		this.userName = userName;
		this.userPwd = userPwd;
		this.orgNo = orgNo;
		this.rank = rank;
		this.state = state;
		this.photo = photo;
		this.sex = sex;
		this.phone = phone;
		this.idCode = idCode;
		this.loginIp = loginIp;
		this.loginDate = loginDate;
		this.loginFlag = loginFlag;
		this.sort = sort;
		this.createBy = createBy;
		this.createDate = createDate;
		this.updateBy = updateBy;
		this.updateDate = updateDate;
		this.remarks = remarks;
		this.delFlag = delFlag;
	}

	/**
	 * @desc 构造方法 SysUser
	 */
	public SysUser() {
		super();
	}

	/**
	 * @desc 获取用户编号
	 * @return user_code - 用户编号
	 */
	@Length(min = 1, max = 16)
	public String getUserCode() {
		return userCode;
	}

	/**
	 * @desc 设置用户编号
	 * @param userCode 用户编号
	 */
	public void setUserCode(String userCode) {
		this.userCode = userCode == null ? null : userCode.trim();
	}

	/**
	 * @desc 获取核心客户号
	 * @return main_corp_no - 核心客户号
	 */
	@Length(min = 1, max = 32)
	public String getMainCorpNo() {
		return mainCorpNo;
	}

	/**
	 * @desc 设置核心客户号
	 * @param mainCorpNo 核心客户号
	 */
	public void setMainCorpNo(String mainCorpNo) {
		this.mainCorpNo = mainCorpNo == null ? null : mainCorpNo.trim();
	}

	/**
	 * @desc 获取姓名
	 * @return user_name - 姓名
	 */
	@Length(min = 1, max = 50)
	public String getUserName() {
		return userName;
	}

	/**
	 * @desc 设置姓名
	 * @param userName 姓名
	 */
	public void setUserName(String userName) {
		this.userName = userName == null ? null : userName.trim();
	}

	/**
	 * @desc 获取密码
	 * @return user_pwd - 密码
	 */
	public String getUserPwd() {
		return userPwd;
	}

	/**
	 * @desc 设置密码
	 * @param userPwd 密码
	 */
	public void setUserPwd(String userPwd) {
		this.userPwd = userPwd == null ? null : userPwd.trim();
	}

	/**
	 * @desc 获取归属部门
	 * @return org_no - 归属部门
	 */
	@Length(min = 1, max = 10)
	public String getOrgNo() {
		return orgNo;
	}

	/**
	 * @desc 设置归属部门
	 * @param orgNo 归属部门
	 */
	public void setOrgNo(String orgNo) {
		this.orgNo = orgNo == null ? null : orgNo.trim();
	}

	/**
	 * @desc 获取用户级别
	 * @return level - 用户级别
	 */
	@Length(min = 1, max = 3)
	public String getRank() {
		return rank;
	}

	/**
	 * @desc 设置用户级别
	 * @param rank 用户级别
	 */
	public void setRank(String rank) {
		this.rank = rank == null ? null : rank.trim();
	}

	/**
	 * @desc 获取用户状态(0:正常;1:锁定;2:删除)
	 * @return state - 用户状态(0:正常;1:锁定;2:删除)
	 */
	@Length(min = 1, max = 1)
	public String getState() {
		return state;
	}

	/**
	 * @desc 设置用户状态(0:正常;1:锁定;2:删除)
	 * @param state 用户状态(0:正常;1:锁定;2:删除)
	 */
	public void setState(String state) {
		this.state = state == null ? null : state.trim();
	}

	/**
	 * @desc 获取用户头像
	 * @return photo - 用户头像
	 */
	@Length(max = 200)
	public String getPhoto() {
		return photo;
	}

	/**
	 * @desc 设置用户头像
	 * @param photo 用户头像
	 */
	public void setPhoto(String photo) {
		this.photo = photo == null ? null : photo.trim();
	}

	/**
	 * @desc 获取性别(0:男;1:女)
	 * @return sex - 性别(0:男;1:女)
	 */
	@Length(min = 1, max = 1)
	public String getSex() {
		return sex;
	}

	/**
	 * @desc 设置性别(0:男;1:女)
	 * @param sex 性别(0:男;1:女)
	 */
	public void setSex(String sex) {
		this.sex = sex == null ? null : sex.trim();
	}

	/**
	 * @desc 获取联系电话
	 * @return phone - 联系电话
	 */
	@Length(min = 1, max = 20)
	public String getPhone() {
		return phone;
	}

	/**
	 * @desc 设置联系电话
	 * @param phone 联系电话
	 */
	public void setPhone(String phone) {
		this.phone = phone == null ? null : phone.trim();
	}

	/**
	 * @desc 获取用户身份证号码
	 * @return id_code - 用户身份证号码
	 */
	@Length(max = 18)
	public String getIdCode() {
		return idCode;
	}

	/**
	 * @desc 设置用户身份证号码
	 * @param idCode 用户身份证号码
	 */
	public void setIdCode(String idCode) {
		this.idCode = idCode == null ? null : idCode.trim();
	}

	/**
	 * @desc 获取最后登陆IP
	 * @return login_ip - 最后登陆IP
	 */
	public String getLoginIp() {
		return loginIp;
	}

	/**
	 * @desc 设置最后登陆IP
	 * @param loginIp 最后登陆IP
	 */
	public void setLoginIp(String loginIp) {
		this.loginIp = loginIp == null ? null : loginIp.trim();
	}

	/**
	 * @desc 获取最后登陆时间
	 * @return login_date - 最后登陆时间
	 */
	public Date getLoginDate() {
		return loginDate;
	}

	/**
	 * @desc 设置最后登陆时间
	 * @param loginDate 最后登陆时间
	 */
	public void setLoginDate(Date loginDate) {
		this.loginDate = loginDate;
	}

	/**
	 * @desc 获取是否可登录
	 * @return login_flag - 是否可登录
	 */
	public String getLoginFlag() {
		return loginFlag;
	}

	/**
	 * @desc 设置是否可登录
	 * @param loginFlag 是否可登录
	 */
	public void setLoginFlag(String loginFlag) {
		this.loginFlag = loginFlag == null ? null : loginFlag.trim();
	}

	/**
	 * @desc 获取排序
	 * @return sort - 排序
	 */
	public Long getSort() {
		return sort;
	}

	/**
	 * @desc 设置排序
	 * @param sort 排序
	 */
	public void setSort(Long sort) {
		this.sort = sort;
	}

	public String getOrgName() {
		return orgName;
	}

	public void setOrgName(String orgName) {
		this.orgName = orgName;
	}

	public SysOrg getSysOrg() {
		return sysOrg;
	}

	public void setSysOrg(SysOrg sysOrg) {
		this.sysOrg = sysOrg;
	}
}